from collections.abc import Iterable, Iterator  # 从集合.abc 导入可迭代


if __name__ == "__main__":
    print(isinstance([], Iterable))      # 列表，True
    print(isinstance({}, Iterable))      # 字典，True
    print(isinstance((1,), Iterable))    # 元组，True
    print(isinstance(set(), Iterable))   # 集合，True
    print(isinstance('asaf', Iterable))  # 字符串，True
    print(isinstance(123, Iterable))     # False,整型：非可迭代对象
    print(isinstance(range(1, 10), Iterable))  # range类型，True

    """使用迭代器取数据"""
    nums = [1, 2, 3]  # 可迭代对象
    print('nums是可迭代的么？答案是:', isinstance(nums, Iterable))  # True
    print('nums是迭代器么？答案是:', isinstance(nums, Iterator))  # False

    nums = iter(nums)  # 迭代器
    print('nums是迭代器么？答案是:', isinstance(nums, Iterator))  # True

    # 取出迭代器的数据
    """注意: 若迭代的次数超过了可迭代对象的长度， 就会报 StopIteration 异常"""
    num1 = next(nums)
    print(num1)
    num2 = next(nums)
    print(num2)

